<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Numeric Parsers</title>
<link rel="stylesheet" href="../../../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="../../../index.html" title="Spirit 2.59">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="nonterminal/grammar.html" title="Parser Grammar">
<link rel="next" href="numeric/uint.html" title="Unsigned Integer Parsers (uint_, etc.)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
<td align="center"><a href="../../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../../../libs/libraries.htm">Libraries</a></td>
<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="nonterminal/grammar.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="numeric/uint.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="spirit.qi.reference.numeric"></a><a class="link" href="numeric.html" title="Numeric Parsers">Numeric Parsers</a>
</h4></div></div></div>
<div class="toc"><dl class="toc">
<dt><span class="section"><a href="numeric/uint.html">Unsigned Integer
          Parsers (<code class="computeroutput"><span class="identifier">uint_</span></code>, etc.)</a></span></dt>
<dt><span class="section"><a href="numeric/int.html">Signed Integer Parsers
          (<code class="computeroutput"><span class="identifier">int_</span></code>, etc.)</a></span></dt>
<dt><span class="section"><a href="numeric/real.html">Real Number Parsers
          (<code class="computeroutput"><span class="identifier">float_</span></code>, <code class="computeroutput"><span class="identifier">double_</span></code>, etc.)</a></span></dt>
<dt><span class="section"><a href="numeric/boolean.html">Boolean Parser
          (<code class="computeroutput"><span class="identifier">bool_</span></code>)</a></span></dt>
</dl></div>
<p>
          The library includes a couple of predefined objects for parsing signed
          and unsigned integers and real numbers. These parsers are fully parametric.
          Most of the important aspects of numeric parsing can be finely adjusted
          to suit. This includes the radix base, the minimum and maximum number of
          allowable digits, the exponent, the fraction etc. Policies control the
          real number parsers' behavior. There are some predefined policies covering
          the most common real number formats but the user can supply her own when
          needed.
        </p>
<p>
          The numeric parsers are fine tuned (employing loop unrolling and extensive
          template metaprogramming) with exceptional performance that rivals the
          low level C functions such as <code class="computeroutput"><span class="identifier">atof</span></code>,
          <code class="computeroutput"><span class="identifier">strtod</span></code>, <code class="computeroutput"><span class="identifier">atol</span></code>,
          <code class="computeroutput"><span class="identifier">strtol</span></code>. Benchmarks reveal
          up to 4X speed over the C counterparts. This goes to show that you can
          write extremely tight generic C++ code that rivals, if not surpasses C.
        </p>
<h6>
<a name="spirit.qi.reference.numeric.h0"></a>
          <span class="phrase"><a name="spirit.qi.reference.numeric.module_header"></a></span><a class="link" href="numeric.html#spirit.qi.reference.numeric.module_header">Module
          Header</a>
        </h6>
<pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/numeric.hpp&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_numeric</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
</pre>
<p>
          Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
        </p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><div class="copyright-footer">Copyright © 2001-2011 Joel de Guzman, Hartmut Kaiser<p>
        Distributed under the Boost Software License, Version 1.0. (See accompanying
        file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
      </p>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="nonterminal/grammar.html"><img src="../../../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="numeric/uint.html"><img src="../../../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>
